import { Server } from 'socket.io'
import * as http from 'http'
import * as https from 'https'
import * as fs from 'fs'
import * as path from 'path'

// const server = http.createServer()

const server = https.createServer({
  key: fs.readFileSync(path.join(__dirname, '../../cert.key')),
  cert: fs.readFileSync(path.join(__dirname, '../../cert.crt'))
})

const io = new Server(server, {
  // options
  cors: {
    origin: '*'
  }
})

io.on('connection', (socket) => {
  console.log('connection', socket.id)
  socket.on('join', (data) => {
    console.log('join-room-加入房间', data)
    socket.join(data.roomId)
  })

  socket.on('offer', (data) => {
    // console.log(data)
    const roomId = data.roomId
    console.log(roomId)
    socket.to(roomId).emit('offer', data)
  })

  socket.on('answer', (data) => {
    // console.log(data)
    const roomId = data.roomId
    socket.to(roomId).emit(`answer`, data)
  })

  socket.on('icecandidate', (data) => {
    const roomId = data.roomId
    socket.to(roomId).emit(`icecandidate`, data)
  })
})

// 用户连接
// io.on('connection', (socket) => {
//   // 用户离开房间
//   socket.on('leave', (data) => {
//     // console.log('leave', data)
//     // handleUserDisconnect(socket)
//   })
//   // 监听连接断开
//   socket.on('disconnect', () => {
//     console.log('disconnect~')
//     // handleUserDisconnect(socket)
//   })

//   socket.on('join', (data) => {
//     console.log('join-room')
//   })
//   //=============================
//   // 用户发送 offer
//   socket.on('offer', (data) => {
//     socket.to(data.roomId).emit('offer', data)
//   })
//   // 用户发送 answer
//   socket.on('answer', (data) => {
//     socket.to(data.roomId).emit('answer', data)
//   })
//   // 用户发送消息
//   socket.on('message', (data) => {
//     console.log('message', data)
//   })
// })

server.listen(443, () => {
  console.log('服务已启动--prod:443')
})

// server.on('error', onError)
// server.on('listening', onListening)

// function normalizePort(val) {
//   var port = parseInt(val, 10)

//   if (isNaN(port)) {
//     // named pipe
//     return val
//   }

//   if (port >= 0) {
//     // port number
//     return port
//   }

//   return false
// }

/**
 * Event listener for HTTP server "error" event.
 */
// function onError(error) {
//   if (error.syscall !== 'listen') {
//     throw error;
//   }

//   var bind = typeof port === 'string'
//     ? 'Pipe ' + port
//     : 'Port ' + port;

//   // handle specific listen errors with friendly messages
//   switch (error.code) {
//     case 'EACCES':
//       console.error(bind + ' requires elevated privileges');
//       process.exit(1);
//       break;
//     case 'EADDRINUSE':
//       console.error(bind + ' is already in use');
//       process.exit(1);
//       break;
//     default:
//       throw error;
//   }
// }

// /**
//  * Event listener for HTTP server "listening" event.
//  */
// function onListening() {
//   var addr = server.address();
//   var bind = typeof addr === 'string'
//     ? 'pipe ' + addr
//     : 'port ' + addr.port;
//   debug('Listening on ' + bind);

// }
